package com.example.dailyfitnesstracker;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private EditText stepsInput;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
stepsInput = findViewById(R.id.steps_input);
Button calculateCaloriesButton = findViewById(R.id.calculate_calories_button);
calculateCaloriesButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String stepsText = stepsInput.getText().toString();
if (stepsText.isEmpty()) {
Toast.makeText(MainActivity.this, "Please enter your steps", Toast.LENGTH_SHORT).show();
} else {
int steps = Integer.parseInt(stepsText);
Intent intent = new Intent(MainActivity.this, CaloriesActivity.class);
intent.putExtra("steps", steps);
startActivity(intent);
}
}
});
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp"
android:gravity="center"
android:background="@color/green">
<TextView
android:id="@+id/app_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="24dp"
android:text="Daily Fitness Tracker"
android:textSize="32sp"
android:layout_gravity="center_horizontal"
android:textColor="@color/white" />
<EditText
android:id="@+id/steps_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter your steps"
android:inputType="number"
android:layout_margin="44dp"
android:padding="16dp"
android:textSize="24sp"
android:minHeight="60dp"
android:background="@color/white"
android:textColor="@color/black" />
<Button
android:id="@+id/calculate_calories_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="24dp"
android:background="@android:color/black"
android:minHeight="60dp"
android:padding="16dp"
android:text="Calculate Calories"
android:textColor="@color/white"
android:textSize="24sp" />
</LinearLayout>
package com.example.dailyfitnesstracker;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class CaloriesActivity extends AppCompatActivity {
private EditText weightInput;
private EditText ageInput;
private TextView caloriesBurned;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calories);
weightInput = findViewById(R.id.weight_input);
ageInput = findViewById(R.id.age_input);
caloriesBurned = findViewById(R.id.calories_burned);
Button calculateButton = findViewById(R.id.calculate_button);
Button backButton = findViewById(R.id.back_button);
calculateButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int steps = getIntent().getIntExtra("steps", 0);
if (steps == 0) {
Toast.makeText(CaloriesActivity.this, "Please enter steps in the main screen", Toast.LENGTH_SHORT).show();
finish(); // Navigate back to MainActivity
return;
}
int weight = Integer.parseInt(weightInput.getText().toString());
int age = Integer.parseInt(ageInput.getText().toString());
double calories = calculateCalories(weight, age, steps);
caloriesBurned.setText("Calories Burned: " + Math.round(calories));
}
});
backButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish(); // Navigate back to MainActivity
}
});
}
private double calculateCalories(int weight, int age, int steps) {
// MET value for walking at moderate speed (e.g., 3.5 METs)
double met = 3.5;
// Average step length in miles (e.g., 2,000 steps per mile)
double stepsPerMile = 2000;
// Convert steps to miles
double miles = steps / stepsPerMile;
// Adjust the MET value based on age (example adjustment, you can refine this)
double ageFactor = 1 - (age - 20) * 0.001;
// Calories burned per mile = METs * weight (lbs) * miles * ageFactor
double caloriesPerMile = met * weight * miles * ageFactor;
return caloriesPerMile;
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp"
android:gravity="center"
android:background="@color/green">
<TextView
android:id="@+id/calories_burned"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="12dp"
android:padding="16dp"
android:text="Calories Burned: 0"
android:textColor="@color/white"
android:textSize="34sp" />
<EditText
android:id="@+id/weight_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="12dp"
android:background="@color/white"
android:hint="Enter your weight (lbs)"
android:inputType="number"
android:minHeight="60dp"
android:padding="16dp"
android:textColor="@color/black"
android:textSize="24sp" />
<EditText
android:id="@+id/age_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="12dp"
android:background="@color/white"
android:hint="Enter your age"
android:inputType="number"
android:minHeight="60dp"
android:padding="16dp"
android:textColor="@color/black"
android:textSize="24sp" />
<Button
android:id="@+id/calculate_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="24dp"
android:background="@android:color/black"
android:minHeight="60dp"
android:padding="16dp"
android:text="Calculate"
android:textAlignment="textStart"
android:textColor="@color/white"
android:textSize="24sp" />
<Button
android:id="@+id/back_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="24dp"
android:background="@android:color/black"
android:minHeight="60dp"
android:padding="16dp"
android:text="Back"
android:textAlignment="textStart"
android:textColor="@color/white"
android:textSize="24sp" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="green">#4CAF50</color>
<color name="white">#FFFFFF</color>
<color name="black">#000000</color>
</resources>
Author
UL